<template>
	<view>
		<image src="../../static/1.jpg" style="width: 100%;height: 300rpx;"></image>
		<button @click="generatePDFS">填充</button>
		<button @click="changePDF">打开PDF</button>
		<button @click="onUploadFile">上传PDF</button>
	</view>
</template>

<script>
	import jsPDF from 'jspdf';

	import {
		pdfPathToBase64
	} from '@/utils/imageTools.js';

	export default {
		methods: {
			// 上传文件
			onUploadFile() {
				let that = this;
				const MediaStore = plus.android.importClass('android.provider.MediaStore');
				const main = plus.android.runtimeMainActivity();
				const Uri = plus.android.importClass('android.net.Uri');

				// 选择文件 chooseFile:H5   chooseMessageFile:小程序  APP图片和视频chooseMedia
				plus.io.chooseFile({
					title: '选择文件',
					filetypes: ['xlsx', 'xls', 'pdf', 'doc', 'docx'], // 允许的文件类型
					multiple: false, // 是否允许多选
				}, (event) => {
					if (event.files && event.files.length > 0) {
						const tempFilePath = decodeURIComponent(event.files[0]);
						console.log('选择的虚拟路径:', tempFilePath);

						// 解析文件ID
						const uri = MediaStore.Files.getContentUri("external");
						// 导入contentResolver
						plus.android.importClass(main.getContentResolver());

						// 从虚拟路径中提取ID
						const parts = tempFilePath.split(':');
						const fileId = parts[parts.length - 1];

						console.log('文件ID:', fileId);

						// 查询真实路径
						let cursor = main.getContentResolver().query(
							uri,
							['_data'],
							"_id=?",
							[fileId],
							null
						);

						plus.android.importClass(cursor);

						let realPath = null;
						if (cursor != null && cursor.moveToFirst()) {
							const columnIndex = cursor.getColumnIndexOrThrow('_data');
							realPath = cursor.getString(columnIndex);
							cursor.close();
						}

						if (realPath) {
							// 转换为file://格式
							const filePath = 'file://' + realPath;
							console.log('文件真实路径:', filePath);
							pdfPathToBase64(filePath).then(res => {
									//res为路径
									console.log("转base64后的路径", res)
									// const base64 = res.substr(22);
									// const fixedBase64 = that.validateAndFixBase64(base64);
								}).catch((err) => {
									// uni.hideLoading();
									console.log("压缩转base64错误", err)
								})
						} else {
							reject(new Error('无法获取文件路径'));
						}
					} else {
						reject(new Error('未选择文件'));
					}
				});
				// uni.chooseFile({
				// 	count: 1, // 最多可以选择的文件数量，默认1
				// 	success: function(res) {
				// 		console.log("选择文件", res)
				// 		// 获取选择的文件的临时文件路径
				// 		// var tempFilePath = res.tempFiles[0].path;
				// 		var tempFilePath = res.tempFilePaths[0];
				// 		// 使用 split() 方法来分割路径
				// 		that.fileName = tempFilePath.split('/').pop();
				// 		// 获取文件name
				// 		// var name = res.tempFiles[0].name;
				// 		uni.showLoading({
				// 			title: '正在上传文件...'
				// 		})
				// 		// that.ploadFilePromise(tempFilePath)
				// 		pathToBase64(tempFilePath).then(res => {
				// 			uni.hideLoading();
				// 			//res为图片路径
				// 			console.log("转base64后的路径", res)
				// 			// const base64 = res.substr(22);
				// 			// const fixedBase64 = that.validateAndFixBase64(base64);
				// 			// // console.log("正则后的base64",fixedBase64)
				// 			// that.Attachment.push({
				// 			// 	attName: that.fileName,
				// 			// 	attValue: fixedBase64
				// 			// })
				// 		}).catch((err) => {
				// 			uni.hideLoading();
				// 			console.log("压缩转base64错误", err)
				// 		})
				// 	},
				// 	fail: function(err) {
				// 		console.error('选择文件失败:', err);
				// 	}
				// });
			},
			changePDF() {
				uni.openDocument({
					filePath: '../../static/1.pdf', // 本地文件路径
					fileType: 'pdf', // 文件类型
					success: function(res) {
						console.log('PDF文件成功打开');
					},
					fail: function(err) {
						console.error('打开PDF文件失败:', err);
					}
				});

			},
			generatePDFS() {
				const doc = new jsPDF();

				// 添加页面
				doc.addPage();

				// 添加文本到指定位置
				const data = {
					name: '张三',
					age: 28,
					address: '北京市海淀区'
				};

				// 设置字体大小
				doc.setFontSize(12);

				// 在指定位置添加数据 (x, y) 是文本的起始位置
				doc.text(data.name, 50, 60); // 填入名字，(x, y) 坐标
				doc.text(data.age.toString(), 50, 80); // 填入年龄
				doc.text(data.address, 50, 100); // 填入地址

				// 保存生成的 PDF
				doc.save('generated.pdf');
			},
			generatePDF() {
				const doc = new jsPDF();

				// 添加页面
				doc.addPage();

				// 加载PDF模板（假设模板为 base64 格式的图片）
				// const templateData = './1.jpg';  // 你的模板base64数据

				// 假设图片路径是通过选择器获取的，或是已知的本地路径
				const imagePath = '../../static/1.jpg'; // 本地图片路径

				pathToBase64(imagePath)
					.then(function(base64Data) {
						console.log('Base64编码结果:', base64Data); // 处理返回的Base64编码
					})
					.catch(function(error) {
						console.error('出错了:', error); // 捕获错误
					});



				//       // 使用 `addImage` 方法将模板加载进来
				//       doc.addImage(templateData, 'PNG', 0, 0, 210, 297); // A4 页面大小 (210mm x 297mm)

				//       // 填入动态数据（比如表单数据）
				//       const data = {
				//         name: '张三',
				//         age: 28,
				//         address: '北京市海淀区'
				//       };

				//       // 添加文本数据，填入模板位置
				//       doc.setFontSize(12);
				//       doc.text(data.name, 50, 60);  // 填入名字，(x, y) 坐标
				//       doc.text(data.age.toString(), 50, 80);  // 填入年龄
				//       doc.text(data.address, 50, 100);  // 填入地址

				//       // 生成并下载 PDF
				//       doc.save('generated.pdf');
			}
		}
	}
</script>

<style>
</style>